extensions: protect gray unpremuls from gggl against division by 0.0
authorØyvind Kolås <pippin@gimp.org>
Fri, 10 Nov 2017 09:34:57 +0000 (10:34 +0100)
committerØyvind Kolås <pippin@gimp.org>
Fri, 10 Nov 2017 09:34:57 +0000 (10:34 +0100)
extensions/gggl-lies.c
extensions/gggl.c

index b34f8ef81cec573a5aafe50042e7ed7bdd3117c9..c08dccd7cec0327d2ff38d9657ba6e084cce0f7d 100644 (file)
@@ -356,7 +356,10 @@ conv_gAF_gaF (const Babl *conversion,unsigned char *src, unsigned char *dst, lon
     {
       float alpha = (*(float *) (src + 4));
 
-      *(float *) dst = ((*(float *) src) / alpha);
+      if (alpha == 0.0f)
+        *(float *) dst = 0.0f;
+      else
+        *(float *) dst = ((*(float *) src) / alpha);
       dst           += 4;
       src           += 4;
       *(float *) dst = alpha;
index 83352d286e5bf813ca09fb086c4eb267769b211f..d101bef37161cee7d554fc7b87b5ab79b5cde810 100644 (file)
@@ -373,7 +373,10 @@ conv_gAF_gaF (const Babl *conversion,unsigned char *src, unsigned char *dst, lon
     {
       float alpha = (*(float *) (src + 4));
 
-      *(float *) dst = ((*(float *) src) / alpha);
+      if (alpha == 0.0f)
+        *(float *) dst = 0.0f;
+      else
+        *(float *) dst = ((*(float *) src) / alpha);
       dst           += 4;
       src           += 4;
       *(float *) dst = alpha;